"use strict";
const BaseController = require("../base");

// 定义创建接口的请求参数规则
const getTrademarkListRule = {
  page: "number",
  limit: "number",
};

const saveTrademarkRule = {
  name: "string",
  logoUrl: "string",
  isAdmin: {
    type: "boolean",
    required: false,
  },
};

const updateTrademarkRule = {
  name: "string",
  id: "string",
  logoUrl: "string",
};

const removeTrademarkRule = {
  id: "string",
};

class TrademarksController extends BaseController {
  async getAllTrademarkList() {
    const ctx = this.ctx;
    const data = await ctx.service.product.trademarks.getAllTrademarkList();
    this.success(data);
  }
  async getTrademarkList() {
    const ctx = this.ctx;
    // 校验参数是否符合我们预期的格式
    const { page, limit } = ctx.params;
    const params = {
      page: +page,
      limit: +limit,
    };
    // 如果参数校验未通过，将会抛出一个 status = 422 的异常
    ctx.validate(getTrademarkListRule, params);
    const data = await ctx.service.product.trademarks.getTrademarkList(params);
    this.success(data);
  }
  async saveTrademark() {
    const ctx = this.ctx;
    // 校验参数是否符合我们预期的格式
    const body = ctx.request.body;
    // 如果参数校验未通过，将会抛出一个 status = 422 的异常
    ctx.validate(saveTrademarkRule, body);
    const data = await ctx.service.product.trademarks.saveTrademark(body);
    this.success(data);
  }
  async updateTrademark() {
    const ctx = this.ctx;
    // 校验参数是否符合我们预期的格式
    const body = ctx.request.body;
    // 如果参数校验未通过，将会抛出一个 status = 422 的异常
    ctx.validate(updateTrademarkRule, body);
    const isSuccess = await ctx.service.product.trademarks.updateTrademark(body);
    if (isSuccess) {
      this.success(null);
    } else {
      ctx.status = 403;
    }
  }
  async removeTrademark() {
    const ctx = this.ctx;
    // 校验参数是否符合我们预期的格式
    // 如果参数校验未通过，将会抛出一个 status = 422 的异常
    ctx.validate(removeTrademarkRule, ctx.params);
    const isSuccess = await ctx.service.product.trademarks.removeTrademark(ctx.params.id);
    if (isSuccess) {
      this.success(null);
    } else {
      ctx.status = 403;
    }
  }
}

module.exports = TrademarksController;
